package com.hospital.register.user.mapper;

import com.hospital.register.dto.user.PatientQueryDto;
import com.hospital.register.model.user.Patient;
import com.hospital.register.vo.user.PatientQueryVo;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 访问就诊人数据
 *
 * @author 刘逸晖
 */
public interface PatientMapper {

    /**
     * 根据条件查询就诊人列表
     * 用户 id 必填
     *
     * @param conditions 条件
     * @return 就诊人列表
     */
    List<PatientQueryVo> selectList(PatientQueryDto conditions);

    /**
     * 新增就诊人
     *
     * @param patient 预新增的就诊人信息
     * @return 新增记录数
     */
    int insert(Patient patient);

    /**
     * 根据用户 id 和 就诊人 id 查询就诊人
     *
     * @param id     id
     * @param userId 用户 id
     * @return 就诊人信息
     */
    PatientQueryVo selectMineById(@Param("id") Long id, @Param("userId") Long userId);

    /**
     * 根据 id 查询就诊人
     *
     * @param id id
     * @return 就诊人信息
     */
    PatientQueryVo selectById(@Param("id") Long id);

    /**
     * 更新就诊人
     *
     * @param patient 就诊人
     * @return 更新的记录数
     */
    int update(@Param("patient") Patient patient);

    /**
     * 根据 id 删除就诊人
     *
     * @param id         id
     * @param updateTime 更新时间
     * @param userId     所属用户的 id
     * @return 删除的记录数
     */
    int deleteById(@Param("id") Long id, @Param("updateTime") Date updateTime, @Param("userId") Long userId);

}
